/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.apache.fontbox.cff;

/**
 * This is specialized CFFEncoding. It's used if the EncodingId of a font is set to 0.
 * 
 * @author Villu Ruusmann
 */
public final class CFFStandardEncoding extends CFFEncoding
{
    private static final int CHAR_CODE = 0;
    private static final int CHAR_SID = 1;
    
    private CFFStandardEncoding()
    {
        // Table of character codes and their corresponding sid.
        int[][] cffStandardEncodingTable = {
                {0, 0},
                {1, 0},
                {2, 0},
                {3, 0},
                {4, 0},
                {5, 0},
                {6, 0},
                {7, 0},
                {8, 0},
                {9, 0},
                {10, 0},
                {11, 0},
                {12, 0},
                {13, 0},
                {14, 0},
                {15, 0},
                {16, 0},
                {17, 0},
                {18, 0},
                {19, 0},
                {20, 0},
                {21, 0},
                {22, 0},
                {23, 0},
                {24, 0},
                {25, 0},
                {26, 0},
                {27, 0},
                {28, 0},
                {29, 0},
                {30, 0},
                {31, 0},
                {32, 1},
                {33, 2},
                {34, 3},
                {35, 4},
                {36, 5},
                {37, 6},
                {38, 7},
                {39, 8},
                {40, 9},
                {41, 10},
                {42, 11},
                {43, 12},
                {44, 13},
                {45, 14},
                {46, 15},
                {47, 16},
                {48, 17},
                {49, 18},
                {50, 19},
                {51, 20},
                {52, 21},
                {53, 22},
                {54, 23},
                {55, 24},
                {56, 25},
                {57, 26},
                {58, 27},
                {59, 28},
                {60, 29},
                {61, 30},
                {62, 31},
                {63, 32},
                {64, 33},
                {65, 34},
                {66, 35},
                {67, 36},
                {68, 37},
                {69, 38},
                {70, 39},
                {71, 40},
                {72, 41},
                {73, 42},
                {74, 43},
                {75, 44},
                {76, 45},
                {77, 46},
                {78, 47},
                {79, 48},
                {80, 49},
                {81, 50},
                {82, 51},
                {83, 52},
                {84, 53},
                {85, 54},
                {86, 55},
                {87, 56},
                {88, 57},
                {89, 58},
                {90, 59},
                {91, 60},
                {92, 61},
                {93, 62},
                {94, 63},
                {95, 64},
                {96, 65},
                {97, 66},
                {98, 67},
                {99, 68},
                {100, 69},
                {101, 70},
                {102, 71},
                {103, 72},
                {104, 73},
                {105, 74},
                {106, 75},
                {107, 76},
                {108, 77},
                {109, 78},
                {110, 79},
                {111, 80},
                {112, 81},
                {113, 82},
                {114, 83},
                {115, 84},
                {116, 85},
                {117, 86},
                {118, 87},
                {119, 88},
                {120, 89},
                {121, 90},
                {122, 91},
                {123, 92},
                {124, 93},
                {125, 94},
                {126, 95},
                {127, 0},
                {128, 0},
                {129, 0},
                {130, 0},
                {131, 0},
                {132, 0},
                {133, 0},
                {134, 0},
                {135, 0},
                {136, 0},
                {137, 0},
                {138, 0},
                {139, 0},
                {140, 0},
                {141, 0},
                {142, 0},
                {143, 0},
                {144, 0},
                {145, 0},
                {146, 0},
                {147, 0},
                {148, 0},
                {149, 0},
                {150, 0},
                {151, 0},
                {152, 0},
                {153, 0},
                {154, 0},
                {155, 0},
                {156, 0},
                {157, 0},
                {158, 0},
                {159, 0},
                {160, 0},
                {161, 96},
                {162, 97},
                {163, 98},
                {164, 99},
                {165, 100},
                {166, 101},
                {167, 102},
                {168, 103},
                {169, 104},
                {170, 105},
                {171, 106},
                {172, 107},
                {173, 108},
                {174, 109},
                {175, 110},
                {176, 0},
                {177, 111},
                {178, 112},
                {179, 113},
                {180, 114},
                {181, 0},
                {182, 115},
                {183, 116},
                {184, 117},
                {185, 118},
                {186, 119},
                {187, 120},
                {188, 121},
                {189, 122},
                {190, 0},
                {191, 123},
                {192, 0},
                {193, 124},
                {194, 125},
                {195, 126},
                {196, 127},
                {197, 128},
                {198, 129},
                {199, 130},
                {200, 131},
                {201, 0},
                {202, 132},
                {203, 133},
                {204, 0},
                {205, 134},
                {206, 135},
                {207, 136},
                {208, 137},
                {209, 0},
                {210, 0},
                {211, 0},
                {212, 0},
                {213, 0},
                {214, 0},
                {215, 0},
                {216, 0},
                {217, 0},
                {218, 0},
                {219, 0},
                {220, 0},
                {221, 0},
                {222, 0},
                {223, 0},
                {224, 0},
                {225, 138},
                {226, 0},
                {227, 139},
                {228, 0},
                {229, 0},
                {230, 0},
                {231, 0},
                {232, 140},
                {233, 141},
                {234, 142},
                {235, 143},
                {236, 0},
                {237, 0},
                {238, 0},
                {239, 0},
                {240, 0},
                {241, 144},
                {242, 0},
                {243, 0},
                {244, 0},
                {245, 145},
                {246, 0},
                {247, 0},
                {248, 146},
                {249, 147},
                {250, 148},
                {251, 149},
                {252, 0},
                {253, 0},
                {254, 0},
                {255, 0}
        };
        for (int[] encodingEntry : cffStandardEncodingTable)
        {
            add(encodingEntry[CHAR_CODE], encodingEntry[CHAR_SID]);
        }
    }

    /**
     * Returns an instance of the CFFStandardEncoding class.
     * @return an instance of CFFStandardEncoding
     */
    public static CFFStandardEncoding getInstance()
    {
        return CFFStandardEncoding.INSTANCE;
    }

    private static final CFFStandardEncoding INSTANCE = new CFFStandardEncoding();

}
